package src.G_E_AnnotationAndReflection;

// 获取三个类加载器
public class G02_ReflectionTest05 {
    public static void main(String[] args) throws ClassNotFoundException {

        // 系统类加载器（SystemClassLoader）
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);
        // 扩展类加载器（ExtensionClassLoader）
        ClassLoader extensionClassLoader = systemClassLoader.getParent();
        System.out.println(extensionClassLoader);
        // 引导类加载器（BootStrapClassLoader）
        ClassLoader bootStrapClassLoader = extensionClassLoader.getParent();
        System.out.println(bootStrapClassLoader); // null，这个是获取不到的用C++写的

        // 测试当前类是哪个加载器加载的
        ClassLoader classLoader = G02_ReflectionTest05.class.getClassLoader();
        System.out.println(classLoader); // 系统类加载器
        // 测试Object类是哪个加载器加载的
        ClassLoader loader = Class.forName("java.lang.Object").getClassLoader();
        System.out.println(loader); // 引导类加载器
        // 获取系统加载器可以加载哪些路径（不在这些路径内，系统加载器是加载不到了）
        System.out.println(System.getProperty("java.class.path"));
    }
}
